
#ifndef _UCPUBLISHUIREACTORS_H
#define _UCPUBLISHUIREACTORS_H

#include "zAdAChar.h"
#include "zAcPublishReactors.h"
#include "zrxobject.h"
#include "zacarray.h"
#include "zacpldsddata.h"
#include "zAcPublishReactors.h"

class UcPublishUIReactorInfo
{
public:
    UcPublishUIReactorInfo() {};
    virtual ~UcPublishUIReactorInfo() {};
    virtual const UcPlDSDData * GetDSDData() = 0;
    virtual const UcNameValuePairVec
        GetPrivateData(const ZTCHAR * sectionName) = 0;
    virtual bool WritePrivateSection(const ZTCHAR * sectionName,
        const UcNameValuePairVec nameValuePairVec) = 0;
    virtual bool JobWillPublishInBackground() = 0;
};

class UcPublishUIReactor : public UcRxObject
{
public:
    virtual void OnInitPublishOptionsDialog(IUnknown **pUnk,
                                            UcPublishUIReactorInfo *pInfo);
	virtual void OnInitExportOptionsDialog(IUnknown **pUnk, UcPublishUIReactorInfo *pInfo);

	virtual void PersistenceRegistryForExportOptionsDialog(const ZTCHAR* lpszRegRoot, bool bIsReadRegistry = true);

	virtual void OnInitAutoPublishSettingsDialog(IUnknown **pUnk, UcPublishUIReactorInfo *pInfo);

	virtual void PersistenceRegistryForAutoPublishDialog(const ZTCHAR* lpszRegRoot,	bool bIsReadRegistry = true);

    virtual ~UcPublishUIReactor() {};

protected:
    UcPublishUIReactor() {};
};

inline void
UcPublishUIReactor::OnInitPublishOptionsDialog(IUnknown **pUnk,
                                               UcPublishUIReactorInfo *pInfo)
{
};


inline 
void UcPublishUIReactor::OnInitExportOptionsDialog(IUnknown **pUnk, UcPublishUIReactorInfo *pInfo)
{
}

inline 
void UcPublishUIReactor::PersistenceRegistryForExportOptionsDialog(const ZTCHAR* lpszRegRoot, bool bIsReadRegistry)
{
}

inline 
void UcPublishUIReactor::OnInitAutoPublishSettingsDialog(IUnknown **pUnk, UcPublishUIReactorInfo *pInfo)
{
}

inline 
void UcPublishUIReactor::PersistenceRegistryForAutoPublishDialog(const ZTCHAR* lpszRegRoot, bool bIsReadRegistry)
{
}

void UcGlobAddPublishUIReactor(UcPublishUIReactor *pReactor);

void UcGlobRemovePublishUIReactor(UcPublishUIReactor *pReactor);

typedef void (__cdecl * UCGLOBADDPUBLISHUIREACTOR)(UcPublishUIReactor * pReactor);
typedef void (__cdecl * UCGLOBREMOVEPUBLISHUIREACTOR)(UcPublishUIReactor * pReactor);
#endif

